package dataS.SortMethod;

public class BubbleSort {
    //从小到大排序，一共n-1趟
    // 每趟不断比较相邻元素，把大的往后移动，交换位置

    //时间复杂度分析，要求从小到大排序
    //最好情况，已经有序，O(n)
    //最坏情况，逆序，O(n^2)

    public static void main(String[] args) {
        int []a=new int[]{7,0,1,10,4,6,7,2,5};
        bubble3(a);
        for (int i : a) {
            System.out.print(i+" ");
        }
    }

    public static void bubble(int[] array){
        for(int i=0;i<array.length-1;i++){
            for(int j=1;j<array.length-i;j++){//此处j从1开始避免数组越界
                if(array[j]<array[j-1]){//后面的元素比前面的小则交换
                    int temp=array[j];
                    array[j]=array[j-1];
                    array[j-1]=temp;
                }
            }
        }
    }
    public static void bubble2(int[] array){
        for(int i=0;i<array.length-1;i++){
            for(int j=0;j<array.length-i-1;j++){//此处j从1开始避免数组越界,j+1不能超过array.length-1
                if(array[j]>array[j+1]){
                    int temp=array[j];
                    array[j]=array[j+1];
                    array[j+1]=temp;
                }
            }
        }
    }
    public static void bubble3(int[] array){
        //从大到小排序
        for(int i=0;i<array.length-1;i++){
            for(int j=0;j<array.length-i-1;j++){
                if(array[j]<array[j+1]){
                    int temp=array[j];
                    array[j]=array[j+1];
                    array[j+1]=temp;
                }
            }
        }
    }
}
